/**
 * SyntaxHighlighter http://alexgorbatchev.com/
 * 
 * SyntaxHighlighter is donationware. If you are using it, please donate.
 * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
 * 
 * @version 2.1.382 (June 24 2010)
 * 
 * @copyright Copyright (C) 2004-2009 Alex Gorbatchev.
 * 
 * @license This file is part of SyntaxHighlighter.
 * 
 * SyntaxHighlighter is free software: you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by the
 * Free Software Foundation, either version 3 of the License, or (at your
 * option) any later version.
 * 
 * SyntaxHighlighter is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
 */
if (!window.SyntaxHighlighter) {
	var SyntaxHighlighter = function() {
		var a = {
			defaults : {
				"class-name" : "",
				"first-line" : 1,
				"pad-line-numbers" : true,
				"highlight" : null,
				"smart-tabs" : true,
				"tab-size" : 4,
				"gutter" : true,
				"toolbar" : true,
				"collapse" : false,
				"auto-links" : true,
				"light" : false,
				"wrap-lines" : true,
				"html-script" : false
			},
			config : {
				useScriptTags : true,
				clipboardSwf : null,
				toolbarItemWidth : 16,
				toolbarItemHeight : 16,
				bloggerMode : false,
				stripBrs : false,
				tagName : "pre",
				strings : {
					expandSource : "show source",
					viewSource : "view source",
					copyToClipboard : "copy to clipboard",
					copyToClipboardConfirmation : "The code is in your clipboard now",
					print : "print",
					help : "?",
					alert : "SyntaxHighlighter\n\n",
					noBrush : "Can't find brush for: ",
					brushNotHtmlScript : "Brush wasn't configured for html-script option: ",
					aboutDialog : '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>About SyntaxHighlighter</title></head><body style="font-family:Geneva,Arial,Helvetica,sans-serif;background-color:#fff;color:#000;font-size:1em;text-align:center;"><div style="text-align:center;margin-top:3em;"><div style="font-size:xx-large;">SyntaxHighlighter</div><div style="font-size:.75em;margin-bottom:4em;"><div>version 2.1.382 (June 24 2010)</div><div><a href="http://alexgorbatchev.com" target="_blank" style="color:#0099FF;text-decoration:none;">http://alexgorbatchev.com</a></div><div>If you like this script, please <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2930402" style="color:#0099FF;text-decoration:none;">donate</a> to keep development active!</div></div><div>JavaScript code syntax highlighter.</div><div>Copyright 2004-2009 Alex Gorbatchev.</div></div></body></html>'
				},
				debug : false
			},
			vars : {
				discoveredBrushes : null,
				spaceWidth : null,
				printFrame : null,
				highlighters : {}
			},
			brushes : {},
			regexLib : {
				multiLineCComments : /\/\*[\s\S]*?\*\//gm,
				singleLineCComments : /\/\/.*$/gm,
				singleLinePerlComments : /#.*$/gm,
				doubleQuotedString : /"([^\\"\n]|\\.)*"/g,
				singleQuotedString : /'([^\\'\n]|\\.)*'/g,
				multiLineDoubleQuotedString : /"([^\\"]|\\.)*"/g,
				multiLineSingleQuotedString : /'([^\\']|\\.)*'/g,
				xmlComments : /(&lt;|<)!--[\s\S]*?--(&gt;|>)/gm,
				url : /&lt;\w+:\/\/[\w-.\/?%&=@:;]*&gt;|\w+:\/\/[\w-.\/?%&=@:;]*/g,
				phpScriptTags : {
					left : /(&lt;|<)\?=?/g,
					right : /\?(&gt;|>)/g
				},
				aspScriptTags : {
					left : /(&lt;|<)%=?/g,
					right : /%(&gt;|>)/g
				},
				scriptScriptTags : {
					left : /(&lt;|<)\s*script.*?(&gt;|>)/gi,
					right : /(&lt;|<)\/\s*script\s*(&gt;|>)/gi
				}
			},
			toolbar : {
				create : function(d) {
					var h = document.createElement("DIV"), b = a.toolbar.items;
					h.className = "toolbar";
					for ( var c in b) {
						var f = b[c], g = new f(d), e = g.create();
						d.toolbarCommands[c] = g;
						if (e == null) {
							continue
						}
						if (typeof (e) == "string") {
							e = a.toolbar.createButton(e, d.id, c)
						}
						e.className += "item " + c;
						h.appendChild(e)
					}
					return h
				},
				createButton : function(f, c, g) {
					var d = document.createElement("a"), i = d.style, e = a.config, h = e.toolbarItemWidth, b = e.toolbarItemHeight;
					d.href = "#" + g;
					d.title = f;
					d.highlighterId = c;
					d.commandName = g;
					d.innerHTML = f;
					if (isNaN(h) == false) {
						i.width = h + "px"
					}
					if (isNaN(b) == false) {
						i.height = b + "px"
					}
					d.onclick = function(j) {
						try {
							a.toolbar.executeCommand(this, j || window.event,
									this.highlighterId, this.commandName)
						} catch (j) {
							a.utils.alert(j.message)
						}
						return false
					};
					return d
				},
				executeCommand : function(f, g, b, e, d) {
					var c = a.vars.highlighters[b], h;
					if (c == null || (h = c.toolbarCommands[e]) == null) {
						return null
					}
					return h.execute(f, g, d)
				},
				items : {
					expandSource : function(b) {
						this.create = function() {
							if (b.getParam("collapse") != true) {
								return
							}
							return a.config.strings.expandSource
						};
						this.execute = function(d, e, c) {
							var f = b.div;
							d.parentNode.removeChild(d);
							f.className = f.className.replace("collapsed", "")
						}
					},
					viewSource : function(b) {
						this.create = function() {
							return a.config.strings.viewSource
						};
						this.execute = function(d, g, c) {
							var f = a.utils.fixInputString(b.originalCode)
									.replace(/</g, "&lt;"), e = a.utils
									.popup("", "_blank", 750, 400,
											"location=0, resizable=1, menubar=0, scrollbars=1");
							f = a.utils.unindent(f);
							e.document.write("<pre>" + f + "</pre>");
							e.document.close()
						}
					},
					copyToClipboard : function(d) {
						var e, c, b = d.id;
						this.create = function() {
							var g = a.config;
							if (g.clipboardSwf == null) {
								return null
							}
							function l(o) {
								var m = "";
								for ( var n in o) {
									m += "<param name='" + n + "' value='"
											+ o[n] + "'/>"
								}
								return m
							}
							function f(o) {
								var m = "";
								for ( var n in o) {
									m += " " + n + "='" + o[n] + "'"
								}
								return m
							}
							var k = {
								width : g.toolbarItemWidth,
								height : g.toolbarItemHeight,
								id : b + "_clipboard",
								type : "application/x-shockwave-flash",
								title : a.config.strings.copyToClipboard
							}, j = {
								allowScriptAccess : "always",
								wmode : "transparent",
								flashVars : "highlighterId=" + b,
								menu : "false"
							}, i = g.clipboardSwf, h;
							if (/msie/i.test(navigator.userAgent)) {
								h = "<object"
										+ f({
											classid : "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",
											codebase : "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"
										}) + f(k) + ">" + l(j) + l({
											movie : i
										}) + "</object>"
							} else {
								h = "<embed" + f(k) + f(j) + f({
									src : i
								}) + "/>"
							}
							e = document.createElement("div");
							e.innerHTML = h;
							return e
						};
						this.execute = function(g, i, f) {
							var j = f.command;
							switch (j) {
							case "get":
								var h = a.utils.unindent(a.utils
										.fixInputString(d.originalCode)
										.replace(/&lt;/g, "<").replace(/&gt;/g,
												">").replace(/&amp;/g, "&"));
								if (window.clipboardData) {
									window.clipboardData.setData("text", h)
								} else {
									return a.utils.unindent(h)
								}
							case "ok":
								a.utils
										.alert(a.config.strings.copyToClipboardConfirmation);
								break;
							case "error":
								a.utils.alert(f.message);
								break
							}
						}
					},
					printSource : function(b) {
						this.create = function() {
							return a.config.strings.print
						};
						this.execute = function(e, g, d) {
							var f = document.createElement("IFRAME"), h = null;
							if (a.vars.printFrame != null) {
								document.body.removeChild(a.vars.printFrame)
							}
							a.vars.printFrame = f;
							f.style.cssText = "position:absolute;width:0px;height:0px;left:-500px;top:-500px;";
							document.body.appendChild(f);
							h = f.contentWindow.document;
							c(h, window.document);
							h.write('<div class="'
									+ b.div.className.replace("collapsed", "")
									+ ' printing">' + b.div.innerHTML
									+ "</div>");
							h.close();
							f.contentWindow.focus();
							f.contentWindow.print();
							function c(j, m) {
								var k = m.getElementsByTagName("link");
								for (var l = 0; l < k.length; l++) {
									if (k[l].rel.toLowerCase() == "stylesheet"
											&& /shCore\.css$/.test(k[l].href)) {
										j
												.write('<link type="text/css" rel="stylesheet" href="'
														+ k[l].href
														+ '"></link>')
									}
								}
							}
						}
					},
					about : function(b) {
						this.create = function() {
							return a.config.strings.help
						};
						this.execute = function(c, e) {
							var d = a.utils.popup("", "_blank", 500, 250,
									"scrollbars=0"), f = d.document;
							f.write(a.config.strings.aboutDialog);
							f.close();
							d.focus()
						}
					}
				}
			},
			utils : {
				indexOf : function(e, b, d) {
					d = Math.max(d || 0, 0);
					for (var c = d; c < e.length; c++) {
						if (e[c] == b) {
							return c
						}
					}
					return -1
				},
				guid : function(b) {
					return b + Math.round(Math.random() * 1000000).toString()
				},
				merge : function(e, d) {
					var b = {}, c;
					for (c in e) {
						b[c] = e[c]
					}
					for (c in d) {
						b[c] = d[c]
					}
					return b
				},
				toBoolean : function(b) {
					switch (b) {
					case "true":
						return true;
					case "false":
						return false
					}
					return b
				},
				popup : function(f, e, g, c, d) {
					var b = (screen.width - g) / 2, i = (screen.height - c) / 2;
					d += ", left=" + b + ", top=" + i + ", width=" + g
							+ ", height=" + c;
					d = d.replace(/^,/, "");
					var h = window.open(f, e, d);
					h.focus();
					return h
				},
				addEvent : function(d, b, c) {
					if (d.attachEvent) {
						d["e" + b + c] = c;
						d[b + c] = function() {
							d["e" + b + c](window.event)
						};
						d.attachEvent("on" + b, d[b + c])
					} else {
						d.addEventListener(b, c, false)
					}
				},
				alert : function(b) {
					alert(a.config.strings.alert + b)
				},
				findBrush : function(f, h) {
					var g = a.vars.discoveredBrushes, b = null;
					if (g == null) {
						g = {};
						for ( var d in a.brushes) {
							var c = a.brushes[d].aliases;
							if (c == null) {
								continue
							}
							a.brushes[d].name = d.toLowerCase();
							for (var e = 0; e < c.length; e++) {
								g[c[e]] = d
							}
						}
						a.vars.discoveredBrushes = g
					}
					b = a.brushes[g[f]];
					if (b == null && h != false) {
						a.utils.alert(a.config.strings.noBrush + f)
					}
					return b
				},
				eachLine : function(d, e) {
					var b = d.split("\n");
					for (var c = 0; c < b.length; c++) {
						b[c] = e(b[c])
					}
					return b.join("\n")
				},
				trimFirstAndLastLines : function(b) {
					return b.replace(/^[ ]*[\n]+|[\n]*[ ]*$/g, "")
				},
				parseParams : function(h) {
					var d, c = {}, e = new XRegExp("^\\[(?<values>(.*?))\\]$"), f = new XRegExp(
							"(?<name>[\\w-]+)" + "\\s*:\\s*" + "(?<value>"
									+ "[\\w-%#]+|" + "\\[.*?\\]|" + '".*?"|'
									+ "'.*?'" + ")\\s*;?", "g");
					while ((d = f.exec(h)) != null) {
						var g = d.value.replace(/^['"]|['"]$/g, "");
						if (g != null && e.test(g)) {
							var b = e.exec(g);
							g = b.values.length > 0 ? b.values.split(/\s*,\s*/)
									: []
						}
						c[d.name] = g
					}
					return c
				},
				decorate : function(c, b) {
					if (c == null || c.length == 0 || c == "\n") {
						return c
					}
					c = c.replace(/</g, "&lt;");
					c = c.replace(/ {2,}/g, function(d) {
						var e = "";
						for (var f = 0; f < d.length - 1; f++) {
							e += "&nbsp;"
						}
						return e + " "
					});
					if (b != null) {
						c = a.utils.eachLine(c, function(d) {
							if (d.length == 0) {
								return ""
							}
							var e = "";
							d = d.replace(/^(&nbsp;| )+/, function(f) {
								e = f;
								return ""
							});
							if (d.length == 0) {
								return e
							}
							return e + '<code class="' + b + '">' + d
									+ "</code>"
						})
					}
					return c
				},
				padNumber : function(d, c) {
					var b = d.toString();
					while (b.length < c) {
						b = "0" + b
					}
					return b
				},
				measureSpace : function() {
					var c = document.createElement("div"), h, j = 0, f = document.body, d = a.utils
							.guid("measureSpace"), i = '<div class="', g = "</div>", e = "</span>";
					c.innerHTML = i + 'syntaxhighlighter">' + i + 'lines">' + i
							+ 'line">' + i + "content"
							+ '"><span class="block"><span id="' + d
							+ '">&nbsp;' + e + e + g + g + g + g;
					f.appendChild(c);
					h = document.getElementById(d);
					if (/opera/i.test(navigator.userAgent)) {
						var b = window.getComputedStyle(h, null);
						j = parseInt(b.getPropertyValue("width"))
					} else {
						j = h.offsetWidth
					}
					f.removeChild(c);
					return j
				},
				processTabs : function(d, e) {
					var c = "";
					for (var b = 0; b < e; b++) {
						c += " "
					}
					return d.replace(/\t/g, c)
				},
				processSmartTabs : function(f, g) {
					var b = f.split("\n"), e = "\t", c = "";
					for (var d = 0; d < 50; d++) {
						c += "                    "
					}
					function h(i, k, j) {
						return i.substr(0, k) + c.substr(0, j)
								+ i.substr(k + 1, i.length)
					}
					f = a.utils.eachLine(f, function(i) {
						if (i.indexOf(e) == -1) {
							return i
						}
						var k = 0;
						while ((k = i.indexOf(e)) != -1) {
							var j = g - k % g;
							i = h(i, k, j)
						}
						return i
					});
					return f
				},
				fixInputString : function(c) {
					var b = /<br\s*\/?>|&lt;br\s*\/?&gt;/gi;
					if (a.config.bloggerMode == true) {
						c = c.replace(b, "\n")
					}
					if (a.config.stripBrs == true) {
						c = c.replace(b, "")
					}
					return c
				},
				trim : function(b) {
					return b.replace(/^\s+|\s+$/g, "")
				},
				unindent : function(j) {
					var c = a.utils.fixInputString(j).split("\n"), h = new Array(), f = /^\s*/, e = 1000;
					for (var d = 0; d < c.length && e > 0; d++) {
						var b = c[d];
						if (a.utils.trim(b).length == 0) {
							continue
						}
						var g = f.exec(b);
						if (g == null) {
							return j
						}
						e = Math.min(g[0].length, e)
					}
					if (e > 0) {
						for (var d = 0; d < c.length; d++) {
							c[d] = c[d].substr(e)
						}
					}
					return c.join("\n")
				},
				matchesSortCallback : function(c, b) {
					if (c.index < b.index) {
						return -1
					} else {
						if (c.index > b.index) {
							return 1
						} else {
							if (c.length < b.length) {
								return -1
							} else {
								if (c.length > b.length) {
									return 1
								}
							}
						}
					}
					return 0
				},
				getMatches : function(f, g) {
					function h(i, j) {
						return [ new a.Match(i[0], i.index, j.css) ]
					}
					var d = 0, c = null, b = [], e = g.func ? g.func : h;
					while ((c = g.regex.exec(f)) != null) {
						b = b.concat(e(c, g))
					}
					return b
				},
				processUrls : function(d) {
					var b = "&lt;", c = "&gt;";
					return d.replace(a.regexLib.url, function(e) {
						var g = "", f = "";
						if (e.indexOf(b) == 0) {
							f = b;
							e = e.substring(b.length)
						}
						if (e.indexOf(c) == e.length - c.length) {
							e = e.substring(0, e.length - c.length);
							g = c
						}
						return f + '<a href="' + e + '">' + e + "</a>" + g
					})
				},
				getSyntaxHighlighterScriptTags : function() {
					var c = document.getElementsByTagName("script"), b = [];
					for (var d = 0; d < c.length; d++) {
						if (c[d].type == "syntaxhighlighter") {
							b.push(c[d])
						}
					}
					return b
				},
				stripCData : function(c) {
					var d = "<![CDATA[", b = "]]>", f = a.utils.trim(c), e = false;
					if (f.indexOf(d) == 0) {
						f = f.substring(d.length);
						e = true
					}
					if (f.indexOf(b) == f.length - b.length) {
						f = f.substring(0, f.length - b.length);
						e = true
					}
					return e ? f : c
				}
			},
			highlight : function(h, f) {
				function e(s) {
					var q = [];
					for (var r = 0; r < s.length; r++) {
						q.push(s[r])
					}
					return q
				}
				var b = f ? [ f ] : e(document
						.getElementsByTagName(a.config.tagName)), j = "innerHTML", n = null, l = a.config;
				if (l.useScriptTags) {
					b = b.concat(a.utils.getSyntaxHighlighterScriptTags())
				}
				if (b.length === 0) {
					return
				}
				for (var g = 0; g < b.length; g++) {
					var k = b[g], d = a.utils.parseParams(k.className), o, c, p;
					d = a.utils.merge(h, d);
					o = d["brush"];
					if (o == null) {
						continue
					}
					if (d["html-script"] == "true"
							|| a.defaults["html-script"] == true) {
						n = new a.HtmlScript(o);
						o = "htmlscript"
					} else {
						var m = a.utils.findBrush(o);
						if (m) {
							o = m.name;
							n = new m()
						} else {
							continue
						}
					}
					c = k[j];
					if (l.useScriptTags) {
						c = a.utils.stripCData(c)
					}
					d["brush-name"] = o;
					n.highlight(c, d);
					p = n.div;
					if (a.config.debug) {
						p = document.createElement("textarea");
						p.value = n.div.innerHTML;
						p.style.width = "70em";
						p.style.height = "30em"
					}
					k.parentNode.replaceChild(p, k)
				}
			},
			all : function(b) {
				a.utils.addEvent(window, "load", function() {
					a.highlight(b)
				})
			}
		};
		a.Match = function(d, b, c) {
			this.value = d;
			this.index = b;
			this.length = d.length;
			this.css = c;
			this.brushName = null
		};
		a.Match.prototype.toString = function() {
			return this.value
		};
		a.HtmlScript = function(b) {
			var d = a.utils.findBrush(b), c, h = new a.brushes.Xml(), g = null;
			if (d == null) {
				return
			}
			c = new d();
			this.xmlBrush = h;
			if (c.htmlScript == null) {
				a.utils.alert(a.config.strings.brushNotHtmlScript + b);
				return
			}
			h.regexList.push({
				regex : c.htmlScript.code,
				func : f
			});
			function e(k, l) {
				for (var i = 0; i < k.length; i++) {
					k[i].index += l
				}
			}
			function f(r, l) {
				var k = r.code, q = [], p = c.regexList, n = r.index
						+ r.left.length, s = c.htmlScript, t;
				for (var o = 0; o < p.length; o++) {
					t = a.utils.getMatches(k, p[o]);
					e(t, n);
					q = q.concat(t)
				}
				if (s.left != null && r.left != null) {
					t = a.utils.getMatches(r.left, s.left);
					e(t, r.index);
					q = q.concat(t)
				}
				if (s.right != null && r.right != null) {
					t = a.utils.getMatches(r.right, s.right);
					e(t, r.index + r[0].lastIndexOf(r.right));
					q = q.concat(t)
				}
				for (var m = 0; m < q.length; m++) {
					q[m].brushName = d.name
				}
				return q
			}
		};
		a.HtmlScript.prototype.highlight = function(b, c) {
			this.xmlBrush.highlight(b, c);
			this.div = this.xmlBrush.div
		};
		a.Highlighter = function() {
		};
		a.Highlighter.prototype = {
			getParam : function(d, c) {
				var b = this.params[d];
				return a.utils.toBoolean(b == null ? c : b)
			},
			create : function(b) {
				return document.createElement(b)
			},
			findMatches : function(e, d) {
				var b = [];
				if (e != null) {
					for (var c = 0; c < e.length; c++) {
						if (typeof (e[c]) == "object") {
							b = b.concat(a.utils.getMatches(d, e[c]))
						}
					}
				}
				return b.sort(a.utils.matchesSortCallback)
			},
			removeNestedMatches : function() {
				var f = this.matches;
				for (var e = 0; e < f.length; e++) {
					if (f[e] === null) {
						continue
					}
					var b = f[e], d = b.index + b.length;
					for (var c = e + 1; c < f.length && f[e] !== null; c++) {
						var g = f[c];
						if (g === null) {
							continue
						} else {
							if (g.index > d) {
								break
							} else {
								if (g.index == b.index && g.length > b.length) {
									this.matches[e] = null
								} else {
									if (g.index >= b.index && g.index < d) {
										this.matches[c] = null
									}
								}
							}
						}
					}
				}
			},
			createDisplayLines : function(b) {
				var n = b.split("\n"), l = parseInt(this.getParam("first-line")), h = this
						.getParam("pad-line-numbers"), m = this.getParam(
						"highlight", []), f = this.getParam("gutter");
				b = "";
				if (h == true) {
					h = (l + n.length - 1).toString().length
				} else {
					if (isNaN(h) == true) {
						h = 0
					}
				}
				for (var g = 0; g < n.length; g++) {
					var o = n[g], c = /^(&nbsp;|\s)+/.exec(o), k = "alt"
							+ (g % 2 == 0 ? 1 : 2), d = a.utils.padNumber(
							l + g, h), e = a.utils.indexOf(m, (l + g)
							.toString()) != -1, j = null;
					if (c != null) {
						j = c[0].toString();
						o = o.substr(j.length)
					}
					o = a.utils.trim(o);
					if (o.length == 0) {
						o = "&nbsp;"
					}
					if (e) {
						k += " highlighted"
					}
					b += '<div class="line '
							+ k
							+ '">'
							+ "<table>"
							+ "<tr>"
							+ (f ? '<td class="number"><code>' + d
									+ "</code></td>" : "")
							+ '<td class="content">'
							+ (j != null ? '<code class="spaces">'
									+ j.replace(" ", "&nbsp;") + "</code>" : "")
							+ o + "</td>" + "</tr>" + "</table>" + "</div>"
				}
				return b
			},
			processMatches : function(b, h) {
				var j = 0, l = "", c = a.utils.decorate, k = this.getParam(
						"brush-name", "");
				function e(m) {
					var i = m ? (m.brushName || k) : k;
					return i ? i + " " : ""
				}
				for (var f = 0; f < h.length; f++) {
					var g = h[f], d;
					if (g === null || g.length === 0) {
						continue
					}
					d = e(g);
					l += c(b.substr(j, g.index - j), d + "plain")
							+ c(g.value, d + g.css);
					j = g.index + g.length
				}
				l += c(b.substr(j), e() + "plain");
				return l
			},
			highlight : function(c, e) {
				var j = a.config, k = a.vars, b, g, h, d = "important";
				this.params = {};
				this.div = null;
				this.lines = null;
				this.code = null;
				this.bar = null;
				this.toolbarCommands = {};
				this.id = a.utils.guid("highlighter_");
				k.highlighters[this.id] = this;
				if (c === null) {
					c = ""
				}
				this.params = a.utils.merge(a.defaults, e || {});
				if (this.getParam("light") == true) {
					this.params.toolbar = this.params.gutter = false
				}
				this.div = b = this.create("DIV");
				this.lines = this.create("DIV");
				this.lines.className = "lines";
				className = "syntaxhighlighter";
				b.id = this.id;
				if (this.getParam("collapse")) {
					className += " collapsed"
				}
				if (this.getParam("gutter") == false) {
					className += " nogutter"
				}
				if (this.getParam("wrap-lines") == false) {
					this.lines.className += " no-wrap"
				}
				className += " " + this.getParam("class-name");
				className += " " + this.getParam("brush-name");
				b.className = className;
				this.originalCode = c;
				this.code = a.utils.trimFirstAndLastLines(c)
						.replace(/\r/g, " ");
				h = this.getParam("tab-size");
				this.code = this.getParam("smart-tabs") == true ? a.utils
						.processSmartTabs(this.code, h) : a.utils.processTabs(
						this.code, h);
				this.code = a.utils.unindent(this.code);
				if (this.getParam("toolbar")) {
					this.bar = this.create("DIV");
					this.bar.className = "bar";
					this.bar.appendChild(a.toolbar.create(this));
					b.appendChild(this.bar);
					var i = this.bar;
					function f() {
						i.className = "bar"
					}
					b.onmouseover = function() {
						f();
						i.className = "bar show"
					};
					b.onmouseout = function() {
						f()
					}
				}
				b.appendChild(this.lines);
				this.matches = this.findMatches(this.regexList, this.code);
				this.removeNestedMatches();
				c = this.processMatches(this.code, this.matches);
				c = this.createDisplayLines(a.utils.trim(c));
				if (this.getParam("auto-links")) {
					c = a.utils.processUrls(c)
				}
				this.lines.innerHTML = c
			},
			getKeywords : function(b) {
				b = b.replace(/^\s+|\s+$/g, "").replace(/\s+/g, "|");
				return "\\b(?:" + b + ")\\b"
			},
			forHtmlScript : function(b) {
				this.htmlScript = {
					left : {
						regex : b.left,
						css : "script"
					},
					right : {
						regex : b.right,
						css : "script"
					},
					code : new XRegExp("(?<left>" + b.left.source + ")"
							+ "(?<code>.*?)" + "(?<right>" + b.right.source
							+ ")", "sgi")
				}
			}
		};
		return a
	}()
}
if (!window.XRegExp) {
	(function() {
		var e = {
			exec : RegExp.prototype.exec,
			match : String.prototype.match,
			replace : String.prototype.replace,
			split : String.prototype.split
		}, d = {
			part : /(?:[^\\([#\s.]+|\\(?!k<[\w$]+>|[pP]{[^}]+})[\S\s]?|\((?=\?(?!#|<[\w$]+>)))+|(\()(?:\?(?:(#)[^)]*\)|<([$\w]+)>))?|\\(?:k<([\w$]+)>|[pP]{([^}]+)})|(\[\^?)|([\S\s])/g,
			replaceVar : /(?:[^$]+|\$(?![1-9$&`']|{[$\w]+}))+|\$(?:([1-9]\d*|[$&`'])|{([$\w]+)})/g,
			extended : /^(?:\s+|#.*)+/,
			quantifier : /^(?:[?*+]|{\d+(?:,\d*)?})/,
			classLeft : /&&\[\^?/g,
			classRight : /]/g
		}, b = function(j, g, h) {
			for (var f = h || 0; f < j.length; f++) {
				if (j[f] === g) {
					return f
				}
			}
			return -1
		}, c = /()??/.exec("")[1] !== undefined, a = {};
		XRegExp = function(o, i) {
			if (o instanceof RegExp) {
				if (i !== undefined) {
					throw TypeError("can't supply flags when constructing one RegExp from another")
				}
				return o.addFlags()
			}
			var i = i || "", f = i.indexOf("s") > -1, k = i.indexOf("x") > -1, p = false, r = [], h = [], g = d.part, l, j, n, m, q;
			g.lastIndex = 0;
			while (l = e.exec.call(g, o)) {
				if (l[2]) {
					if (!d.quantifier.test(o.slice(g.lastIndex))) {
						h.push("(?:)")
					}
				} else {
					if (l[1]) {
						r.push(l[3] || null);
						if (l[3]) {
							p = true
						}
						h.push("(")
					} else {
						if (l[4]) {
							m = b(r, l[4]);
							h.push(m > -1 ? "\\"
									+ (m + 1)
									+ (isNaN(o.charAt(g.lastIndex)) ? ""
											: "(?:)") : l[0])
						} else {
							if (l[5]) {
								h.push(a.unicode ? a.unicode.get(l[5], l[0]
										.charAt(1) === "P") : l[0])
							} else {
								if (l[6]) {
									if (o.charAt(g.lastIndex) === "]") {
										h.push(l[6] === "[" ? "(?!)"
												: "[\\S\\s]");
										g.lastIndex++
									} else {
										j = XRegExp.matchRecursive("&&"
												+ o.slice(l.index),
												d.classLeft, d.classRight, "",
												{
													escapeChar : "\\"
												})[0];
										h.push(l[6] + j + "]");
										g.lastIndex += j.length + 1
									}
								} else {
									if (l[7]) {
										if (f && l[7] === ".") {
											h.push("[\\S\\s]")
										} else {
											if (k && d.extended.test(l[7])) {
												n = e.exec
														.call(
																d.extended,
																o
																		.slice(g.lastIndex - 1))[0].length;
												if (!d.quantifier.test(o
														.slice(g.lastIndex - 1
																+ n))) {
													h.push("(?:)")
												}
												g.lastIndex += n - 1
											} else {
												h.push(l[7])
											}
										}
									} else {
										h.push(l[0])
									}
								}
							}
						}
					}
				}
			}
			q = RegExp(h.join(""), e.replace.call(i, /[sx]+/g, ""));
			q._x = {
				source : o,
				captureNames : p ? r : null
			};
			return q
		};
		XRegExp.addPlugin = function(f, g) {
			a[f] = g
		};
		RegExp.prototype.exec = function(k) {
			var h = e.exec.call(this, k), g, j, f;
			if (h) {
				if (c && h.length > 1) {
					f = new RegExp("^" + this.source + "$(?!\\s)", this
							.getNativeFlags());
					e.replace.call(h[0], f, function() {
						for (j = 1; j < arguments.length - 2; j++) {
							if (arguments[j] === undefined) {
								h[j] = undefined
							}
						}
					})
				}
				if (this._x && this._x.captureNames) {
					for (j = 1; j < h.length; j++) {
						g = this._x.captureNames[j - 1];
						if (g) {
							h[g] = h[j]
						}
					}
				}
				if (this.global && this.lastIndex > (h.index + h[0].length)) {
					this.lastIndex--
				}
			}
			return h
		}
	})()
}
RegExp.prototype.getNativeFlags = function() {
	return (this.global ? "g" : "") + (this.ignoreCase ? "i" : "")
			+ (this.multiline ? "m" : "") + (this.extended ? "x" : "")
			+ (this.sticky ? "y" : "")
};
RegExp.prototype.addFlags = function(a) {
	var b = new XRegExp(this.source, (a || "") + this.getNativeFlags());
	if (this._x) {
		b._x = {
			source : this._x.source,
			captureNames : this._x.captureNames ? this._x.captureNames.slice(0)
					: null
		}
	}
	return b
};
RegExp.prototype.call = function(a, b) {
	return this.exec(b)
};
RegExp.prototype.apply = function(b, a) {
	return this.exec(a[0])
};
XRegExp.cache = function(c, a) {
	var b = "/" + c + "/" + (a || "");
	return XRegExp.cache[b] || (XRegExp.cache[b] = new XRegExp(c, a))
};
XRegExp.escape = function(a) {
	return a.replace(/[-[\]{}()*+?.\\^$|,#\s]/g, "\\$&")
};
XRegExp.matchRecursive = function(p, d, s, f, b) {
	var b = b || {}, v = b.escapeChar, k = b.valueNames, f = f || "", q = f
			.indexOf("g") > -1, c = f.indexOf("i") > -1, h = f.indexOf("m") > -1, u = f
			.indexOf("y") > -1, f = f.replace(/y/g, ""), d = d instanceof RegExp ? (d.global ? d
			: d.addFlags("g"))
			: new XRegExp(d, "g" + f), s = s instanceof RegExp ? (s.global ? s
			: s.addFlags("g")) : new XRegExp(s, "g" + f), i = [], a = 0, j = 0, n = 0, l = 0, m, e, o, r, g, t;
	if (v) {
		if (v.length > 1) {
			throw SyntaxError("can't supply more than one escape character")
		}
		if (h) {
			throw TypeError("can't supply escape character when using the multiline flag")
		}
		g = XRegExp.escape(v);
		t = new RegExp("^(?:" + g + "[\\S\\s]|(?:(?!" + d.source + "|"
				+ s.source + ")[^" + g + "])+)+", c ? "i" : "")
	}
	while (true) {
		d.lastIndex = s.lastIndex = n
				+ (v ? (t.exec(p.slice(n)) || [ "" ])[0].length : 0);
		o = d.exec(p);
		r = s.exec(p);
		if (o && r) {
			if (o.index <= r.index) {
				r = null
			} else {
				o = null
			}
		}
		if (o || r) {
			j = (o || r).index;
			n = (o ? d : s).lastIndex
		} else {
			if (!a) {
				break
			}
		}
		if (u && !a && j > l) {
			break
		}
		if (o) {
			if (!a++) {
				m = j;
				e = n
			}
		} else {
			if (r && a) {
				if (!--a) {
					if (k) {
						if (k[0] && m > l) {
							i.push([ k[0], p.slice(l, m), l, m ])
						}
						if (k[1]) {
							i.push([ k[1], p.slice(m, e), m, e ])
						}
						if (k[2]) {
							i.push([ k[2], p.slice(e, j), e, j ])
						}
						if (k[3]) {
							i.push([ k[3], p.slice(j, n), j, n ])
						}
					} else {
						i.push(p.slice(e, j))
					}
					l = n;
					if (!q) {
						break
					}
				}
			} else {
				d.lastIndex = s.lastIndex = 0;
				throw Error("subject data contains unbalanced delimiters")
			}
		}
		if (j === n) {
			n++
		}
	}
	if (q && !u && k && k[0] && p.length > l) {
		i.push([ k[0], p.slice(l), l, p.length ])
	}
	d.lastIndex = s.lastIndex = 0;
	return i
};
SyntaxHighlighter.brushes.AS3 = function() {
	var b = "class interface function package";
	var a = "-Infinity ...rest Array as AS3 Boolean break case catch const continue Date decodeURI "
			+ "decodeURIComponent default delete do dynamic each else encodeURI encodeURIComponent escape "
			+ "extends false final finally flash_proxy for get if implements import in include Infinity "
			+ "instanceof int internal is isFinite isNaN isXMLName label namespace NaN native new null "
			+ "Null Number Object object_proxy override parseFloat parseInt private protected public "
			+ "return set static String super switch this throw true try typeof uint undefined unescape "
			+ "use void while with";
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi,
		css : "value"
	}, {
		regex : new RegExp(this.getKeywords(b), "gm"),
		css : "color3"
	}, {
		regex : new RegExp(this.getKeywords(a), "gm"),
		css : "keyword"
	}, {
		regex : new RegExp("var", "gm"),
		css : "variable"
	}, {
		regex : new RegExp("trace", "gm"),
		css : "color1"
	} ];
	this.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags)
};
SyntaxHighlighter.brushes.AS3.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.AS3.aliases = [ "actionscript3", "as3" ];
SyntaxHighlighter.brushes.Bash = function() {
	var b = "if fi then elif else for do done until while break continue case function return in eq ne gt lt ge le";
	var a = "alias apropos awk basename bash bc bg builtin bzip2 cal cat cd cfdisk chgrp chmod chown chroot"
			+ "cksum clear cmp comm command cp cron crontab csplit cut date dc dd ddrescue declare df "
			+ "diff diff3 dig dir dircolors dirname dirs du echo egrep eject enable env ethtool eval "
			+ "exec exit expand export expr false fdformat fdisk fg fgrep file find fmt fold format "
			+ "free fsck ftp gawk getopts grep groups gzip hash head history hostname id ifconfig "
			+ "import install join kill less let ln local locate logname logout look lpc lpr lprint "
			+ "lprintd lprintq lprm ls lsof make man mkdir mkfifo mkisofs mknod more mount mtools "
			+ "mv netstat nice nl nohup nslookup open op passwd paste pathchk ping popd pr printcap "
			+ "printenv printf ps pushd pwd quota quotacheck quotactl ram rcp read readonly renice "
			+ "remsync rm rmdir rsync screen scp sdiff sed select seq set sftp shift shopt shutdown "
			+ "sleep sort source split ssh strace su sudo sum symlink sync tail tar tee test time "
			+ "times touch top traceroute trap tr true tsort tty type ulimit umask umount unalias "
			+ "uname unexpand uniq units unset unshar useradd usermod users uuencode uudecode v vdir "
			+ "vi watch wc whereis which who whoami Wget xargs yes";
	this.findMatches = function(d, c) {
		c = c.replace(/&gt;/g, ">").replace(/&lt;/g, "<");
		this.code = c;
		return SyntaxHighlighter.Highlighter.prototype.findMatches.apply(this,
				[ d, c ])
	};
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLinePerlComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : new RegExp(this.getKeywords(b), "gm"),
		css : "keyword"
	}, {
		regex : new RegExp(this.getKeywords(a), "gm"),
		css : "functions"
	} ]
};
SyntaxHighlighter.brushes.Bash.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Bash.aliases = [ "bash", "shell","bsh" ];
SyntaxHighlighter.brushes.ColdFusion = function() {
	var b = "Abs ACos AddSOAPRequestHeader AddSOAPResponseHeader AjaxLink AjaxOnLoad ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt "
			+ "ArrayInsertAt ArrayIsDefined ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArraySet ArraySort ArraySum ArraySwap ArrayToList "
			+ "Asc ASin Atn BinaryDecode BinaryEncode BitAnd BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN BitSHRN BitXor "
			+ "Ceiling CharsetDecode CharsetEncode Chr CJustify Compare CompareNoCase Cos CreateDate CreateDateTime CreateObject "
			+ "CreateODBCDate CreateODBCDateTime CreateODBCTime CreateTime CreateTimeSpan CreateUUID DateAdd DateCompare DateConvert "
			+ "DateDiff DateFormat DatePart Day DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear DE DecimalFormat DecrementValue "
			+ "Decrypt DecryptBinary DeleteClientVariable DeserializeJSON DirectoryExists DollarFormat DotNetToCFType Duplicate Encrypt "
			+ "EncryptBinary Evaluate Exp ExpandPath FileClose FileCopy FileDelete FileExists FileIsEOF FileMove FileOpen FileRead "
			+ "FileReadBinary FileReadLine FileSetAccessMode FileSetAttribute FileSetLastModified FileWrite Find FindNoCase FindOneOf "
			+ "FirstDayOfMonth Fix FormatBaseN GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList GetBaseTemplatePath "
			+ "GetClientVariablesList GetComponentMetaData GetContextRoot GetCurrentTemplatePath GetDirectoryFromPath GetEncoding "
			+ "GetException GetFileFromPath GetFileInfo GetFunctionList GetGatewayHelper GetHttpRequestData GetHttpTimeString "
			+ "GetK2ServerDocCount GetK2ServerDocCountLimit GetLocale GetLocaleDisplayName GetLocalHostIP GetMetaData GetMetricData "
			+ "GetPageContext GetPrinterInfo GetProfileSections GetProfileString GetReadableImageFormats GetSOAPRequest GetSOAPRequestHeader "
			+ "GetSOAPResponse GetSOAPResponseHeader GetTempDirectory GetTempFile GetTemplatePath GetTickCount GetTimeZoneInfo GetToken "
			+ "GetUserRoles GetWriteableImageFormats Hash Hour HTMLCodeFormat HTMLEditFormat IIf ImageAddBorder ImageBlur ImageClearRect "
			+ "ImageCopy ImageCrop ImageDrawArc ImageDrawBeveledRect ImageDrawCubicCurve ImageDrawLine ImageDrawLines ImageDrawOval "
			+ "ImageDrawPoint ImageDrawQuadraticCurve ImageDrawRect ImageDrawRoundRect ImageDrawText ImageFlip ImageGetBlob ImageGetBufferedImage "
			+ "ImageGetEXIFTag ImageGetHeight ImageGetIPTCTag ImageGetWidth ImageGrayscale ImageInfo ImageNegative ImageNew ImageOverlay ImagePaste "
			+ "ImageRead ImageReadBase64 ImageResize ImageRotate ImageRotateDrawingAxis ImageScaleToFit ImageSetAntialiasing ImageSetBackgroundColor "
			+ "ImageSetDrawingColor ImageSetDrawingStroke ImageSetDrawingTransparency ImageSharpen ImageShear ImageShearDrawingAxis ImageTranslate "
			+ "ImageTranslateDrawingAxis ImageWrite ImageWriteBase64 ImageXORDrawingMode IncrementValue InputBaseN Insert Int IsArray IsBinary "
			+ "IsBoolean IsCustomFunction IsDate IsDDX IsDebugMode IsDefined IsImage IsImageFile IsInstanceOf IsJSON IsLeapYear IsLocalHost "
			+ "IsNumeric IsNumericDate IsObject IsPDFFile IsPDFObject IsQuery IsSimpleValue IsSOAPRequest IsStruct IsUserInAnyRole IsUserInRole "
			+ "IsUserLoggedIn IsValid IsWDDX IsXML IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot JavaCast JSStringFormat LCase Left Len "
			+ "ListAppend ListChangeDelims ListContains ListContainsNoCase ListDeleteAt ListFind ListFindNoCase ListFirst ListGetAt ListInsertAt "
			+ "ListLast ListLen ListPrepend ListQualify ListRest ListSetAt ListSort ListToArray ListValueCount ListValueCountNoCase LJustify Log "
			+ "Log10 LSCurrencyFormat LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime "
			+ "LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Max Mid Min Minute Month MonthAsString Now NumberFormat ParagraphFormat ParseDateTime "
			+ "Pi PrecisionEvaluate PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow QueryConvertForGrid QueryNew QuerySetCell QuotedValueList Rand "
			+ "Randomize RandRange REFind REFindNoCase ReleaseComObject REMatch REMatchNoCase RemoveChars RepeatString Replace ReplaceList ReplaceNoCase "
			+ "REReplace REReplaceNoCase Reverse Right RJustify Round RTrim Second SendGatewayMessage SerializeJSON SetEncoding SetLocale SetProfileString "
			+ "SetVariable Sgn Sin Sleep SpanExcluding SpanIncluding Sqr StripCR StructAppend StructClear StructCopy StructCount StructDelete StructFind "
			+ "StructFindKey StructFindValue StructGet StructInsert StructIsEmpty StructKeyArray StructKeyExists StructKeyList StructKeyList StructNew "
			+ "StructSort StructUpdate Tan TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase URLDecode URLEncodedFormat URLSessionFormat Val "
			+ "ValueList VerifyClient Week Wrap Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform "
			+ "XmlValidate Year YesNoFormat";
	var c = "cfabort cfajaximport cfajaxproxy cfapplet cfapplication cfargument cfassociate cfbreak cfcache cfcalendar "
			+ "cfcase cfcatch cfchart cfchartdata cfchartseries cfcol cfcollection cfcomponent cfcontent cfcookie cfdbinfo "
			+ "cfdefaultcase cfdirectory cfdiv cfdocument cfdocumentitem cfdocumentsection cfdump cfelse cfelseif cferror "
			+ "cfexchangecalendar cfexchangeconnection cfexchangecontact cfexchangefilter cfexchangemail cfexchangetask "
			+ "cfexecute cfexit cffeed cffile cfflush cfform cfformgroup cfformitem cfftp cffunction cfgrid cfgridcolumn "
			+ "cfgridrow cfgridupdate cfheader cfhtmlhead cfhttp cfhttpparam cfif cfimage cfimport cfinclude cfindex "
			+ "cfinput cfinsert cfinterface cfinvoke cfinvokeargument cflayout cflayoutarea cfldap cflocation cflock cflog "
			+ "cflogin cfloginuser cflogout cfloop cfmail cfmailparam cfmailpart cfmenu cfmenuitem cfmodule cfNTauthenticate "
			+ "cfobject cfobjectcache cfoutput cfparam cfpdf cfpdfform cfpdfformparam cfpdfparam cfpdfsubform cfpod cfpop "
			+ "cfpresentation cfpresentationslide cfpresenter cfprint cfprocessingdirective cfprocparam cfprocresult "
			+ "cfproperty cfquery cfqueryparam cfregistry cfreport cfreportparam cfrethrow cfreturn cfsavecontent cfschedule "
			+ "cfscript cfsearch cfselect cfset cfsetting cfsilent cfslider cfsprydataset cfstoredproc cfswitch cftable "
			+ "cftextarea cfthread cfthrow cftimer cftooltip cftrace cftransaction cftree cftreeitem cftry cfupdate cfwddx "
			+ "cfwindow cfxml cfzip cfzipparam";
	var a = "all and any between cross in join like not null or outer some";
	this.regexList = [ {
		regex : new RegExp("--(.*)$", "gm"),
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.xmlComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : new RegExp(this.getKeywords(b), "gmi"),
		css : "functions"
	}, {
		regex : new RegExp(this.getKeywords(a), "gmi"),
		css : "color1"
	}, {
		regex : new RegExp(this.getKeywords(c), "gmi"),
		css : "keyword"
	} ]
};
SyntaxHighlighter.brushes.ColdFusion.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.ColdFusion.aliases = [ "coldfusion", "cf" ];
SyntaxHighlighter.brushes.Cpp = function() {
	var c = "ATOM BOOL BOOLEAN BYTE CHAR COLORREF DWORD DWORDLONG DWORD_PTR "
			+ "DWORD32 DWORD64 FLOAT HACCEL HALF_PTR HANDLE HBITMAP HBRUSH "
			+ "HCOLORSPACE HCONV HCONVLIST HCURSOR HDC HDDEDATA HDESK HDROP HDWP "
			+ "HENHMETAFILE HFILE HFONT HGDIOBJ HGLOBAL HHOOK HICON HINSTANCE HKEY "
			+ "HKL HLOCAL HMENU HMETAFILE HMODULE HMONITOR HPALETTE HPEN HRESULT "
			+ "HRGN HRSRC HSZ HWINSTA HWND INT INT_PTR INT32 INT64 LANGID LCID LCTYPE "
			+ "LGRPID LONG LONGLONG LONG_PTR LONG32 LONG64 LPARAM LPBOOL LPBYTE LPCOLORREF "
			+ "LPCSTR LPCTSTR LPCVOID LPCWSTR LPDWORD LPHANDLE LPINT LPLONG LPSTR LPTSTR "
			+ "LPVOID LPWORD LPWSTR LRESULT PBOOL PBOOLEAN PBYTE PCHAR PCSTR PCTSTR PCWSTR "
			+ "PDWORDLONG PDWORD_PTR PDWORD32 PDWORD64 PFLOAT PHALF_PTR PHANDLE PHKEY PINT "
			+ "PINT_PTR PINT32 PINT64 PLCID PLONG PLONGLONG PLONG_PTR PLONG32 PLONG64 POINTER_32 "
			+ "POINTER_64 PSHORT PSIZE_T PSSIZE_T PSTR PTBYTE PTCHAR PTSTR PUCHAR PUHALF_PTR "
			+ "PUINT PUINT_PTR PUINT32 PUINT64 PULONG PULONGLONG PULONG_PTR PULONG32 PULONG64 "
			+ "PUSHORT PVOID PWCHAR PWORD PWSTR SC_HANDLE SC_LOCK SERVICE_STATUS_HANDLE SHORT "
			+ "SIZE_T SSIZE_T TBYTE TCHAR UCHAR UHALF_PTR UINT UINT_PTR UINT32 UINT64 ULONG "
			+ "ULONGLONG ULONG_PTR ULONG32 ULONG64 USHORT USN VOID WCHAR WORD WPARAM WPARAM WPARAM "
			+ "char bool short int __int32 __int64 __int8 __int16 long float double __wchar_t "
			+ "clock_t _complex _dev_t _diskfree_t div_t ldiv_t _exception _EXCEPTION_POINTERS "
			+ "FILE _finddata_t _finddatai64_t _wfinddata_t _wfinddatai64_t __finddata64_t "
			+ "__wfinddata64_t _FPIEEE_RECORD fpos_t _HEAPINFO _HFILE lconv intptr_t "
			+ "jmp_buf mbstate_t _off_t _onexit_t _PNH ptrdiff_t _purecall_handler "
			+ "sig_atomic_t size_t _stat __stat64 _stati64 terminate_function "
			+ "time_t __time64_t _timeb __timeb64 tm uintptr_t _utimbuf "
			+ "va_list wchar_t wctrans_t wctype_t wint_t signed";
	var a = "break case catch class const __finally __exception __try "
			+ "const_cast continue private public protected __declspec "
			+ "default delete deprecated dllexport dllimport do dynamic_cast "
			+ "else enum explicit extern if for friend goto inline "
			+ "mutable naked namespace new noinline noreturn nothrow "
			+ "register reinterpret_cast return selectany "
			+ "sizeof static static_cast struct switch template this "
			+ "thread throw true false try typedef typeid typename union "
			+ "using uuid virtual void volatile whcar_t while";
	var b = "assert isalnum isalpha iscntrl isdigit isgraph islower isprint"
			+ "ispunct isspace isupper isxdigit tolower toupper errno localeconv "
			+ "setlocale acos asin atan atan2 ceil cos cosh exp fabs floor fmod "
			+ "frexp ldexp log log10 modf pow sin sinh sqrt tan tanh jmp_buf "
			+ "longjmp setjmp raise signal sig_atomic_t va_arg va_end va_start "
			+ "clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen "
			+ "fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell "
			+ "fwrite getc getchar gets perror printf putc putchar puts remove "
			+ "rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam "
			+ "ungetc vfprintf vprintf vsprintf abort abs atexit atof atoi atol "
			+ "bsearch calloc div exit free getenv labs ldiv malloc mblen mbstowcs "
			+ "mbtowc qsort rand realloc srand strtod strtol strtoul system "
			+ "wcstombs wctomb memchr memcmp memcpy memmove memset strcat strchr "
			+ "strcmp strcoll strcpy strcspn strerror strlen strncat strncmp "
			+ "strncpy strpbrk strrchr strspn strstr strtok strxfrm asctime "
			+ "clock ctime difftime gmtime localtime mktime strftime time";
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /^ *#.*/gm,
		css : "preprocessor"
	}, {
		regex : new RegExp(this.getKeywords(c), "gm"),
		css : "color1 bold"
	}, {
		regex : new RegExp(this.getKeywords(b), "gm"),
		css : "functions bold"
	}, {
		regex : new RegExp(this.getKeywords(a), "gm"),
		css : "keyword bold"
	} ]
};
SyntaxHighlighter.brushes.Cpp.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Cpp.aliases = [ "cpp", "c" ];
SyntaxHighlighter.brushes.CSharp = function() {
	var b = "abstract as base bool break byte case catch char checked class const "
			+ "continue decimal default delegate do double else enum event explicit "
			+ "extern false finally fixed float for foreach get goto if implicit in int "
			+ "interface internal is lock long namespace new null object operator out "
			+ "override params private protected public readonly ref return sbyte sealed set "
			+ "short sizeof stackalloc static string struct switch this throw true try "
			+ "typeof uint ulong unchecked unsafe ushort using virtual void while";
	function a(c, e) {
		var d = (c[0].indexOf("///") == 0) ? "color1" : "comments";
		return [ new SyntaxHighlighter.Match(c[0], c.index, d) ]
	}
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLineCComments,
		func : a
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineCComments,
		css : "comments"
	}, {
		regex : /@"(?:[^"]|"")*"/g,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /^\s*#.*/gm,
		css : "preprocessor"
	}, {
		regex : new RegExp(this.getKeywords(b), "gm"),
		css : "keyword"
	}, {
		regex : /\bpartial(?=\s+(?:class|interface|struct)\b)/g,
		css : "keyword"
	}, {
		regex : /\byield(?=\s+(?:return|break)\b)/g,
		css : "keyword"
	} ];
	this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags)
};
SyntaxHighlighter.brushes.CSharp.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.CSharp.aliases = [ "c#", "c-sharp", "csharp","cs" ];
SyntaxHighlighter.brushes.CSS = function() {
	function a(f) {
		return "\\b([a-z_]|)" + f.replace(/ /g, "(?=:)\\b|\\b([a-z_\\*]|\\*|)")
				+ "(?=:)\\b"
	}
	function c(f) {
		return "\\b" + f.replace(/ /g, "(?!-)(?!:)\\b|\\b()") + ":\\b"
	}
	var d = "ascent azimuth background-attachment background-color background-image background-position "
			+ "background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top "
			+ "border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color "
			+ "border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width "
			+ "border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color "
			+ "content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display "
			+ "elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font "
			+ "height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top "
			+ "margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans "
			+ "outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page "
			+ "page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position "
			+ "quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress "
			+ "table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em "
			+ "vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index";
	var b = "above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder "
			+ "both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed "
			+ "continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double "
			+ "embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia "
			+ "gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic "
			+ "justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha "
			+ "lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower "
			+ "navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset "
			+ "outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side "
			+ "rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow "
			+ "small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize "
			+ "table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal "
			+ "text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin "
			+ "upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow";
	var e = "[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif";
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.multiLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /\#[a-fA-F0-9]{3,6}/g,
		css : "value"
	}, {
		regex : /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g,
		css : "value"
	}, {
		regex : /!important/g,
		css : "color3"
	}, {
		regex : new RegExp(a(d), "gm"),
		css : "keyword"
	}, {
		regex : new RegExp(c(b), "g"),
		css : "value"
	}, {
		regex : new RegExp(this.getKeywords(e), "g"),
		css : "color1"
	} ];
	this.forHtmlScript({
		left : /(&lt;|<)\s*style.*?(&gt;|>)/gi,
		right : /(&lt;|<)\/\s*style\s*(&gt;|>)/gi
	})
};
SyntaxHighlighter.brushes.CSS.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.CSS.aliases = [ "css" ];
SyntaxHighlighter.brushes.Delphi = function() {
	var a = "abs addr and ansichar ansistring array as asm begin boolean byte cardinal "
			+ "case char class comp const constructor currency destructor div do double "
			+ "downto else end except exports extended false file finalization finally "
			+ "for function goto if implementation in inherited int64 initialization "
			+ "integer interface is label library longint longword mod nil not object "
			+ "of on or packed pansichar pansistring pchar pcurrency pdatetime pextended "
			+ "pint64 pointer private procedure program property pshortstring pstring "
			+ "pvariant pwidechar pwidestring protected public published raise real real48 "
			+ "record repeat set shl shortint shortstring shr single smallint string then "
			+ "threadvar to true try type unit until uses val var varirnt while widechar "
			+ "widestring with word write writeln xor";
	this.regexList = [ {
		regex : /\(\*[\s\S]*?\*\)/gm,
		css : "comments"
	}, {
		regex : /{(?!\$)[\s\S]*?}/gm,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.singleLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /\{\$[a-zA-Z]+ .+\}/g,
		css : "color1"
	}, {
		regex : /\b[\d\.]+\b/g,
		css : "value"
	}, {
		regex : /\$[a-zA-Z0-9]+\b/g,
		css : "value"
	}, {
		regex : new RegExp(this.getKeywords(a), "gmi"),
		css : "keyword"
	} ]
};
SyntaxHighlighter.brushes.Delphi.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Delphi.aliases = [ "delphi", "pascal", "pas" ];
SyntaxHighlighter.brushes.Erlang = function() {
	var a = "after and andalso band begin bnot bor bsl bsr bxor "
			+ "case catch cond div end fun if let not of or orelse "
			+ "query receive rem try when xor" + " module export import define";
	this.regexList = [ {
		regex : new RegExp("[A-Z][A-Za-z0-9_]+", "g"),
		css : "constants"
	}, {
		regex : new RegExp("\\%.+", "gm"),
		css : "comments"
	}, {
		regex : new RegExp("\\?[A-Za-z0-9_]+", "g"),
		css : "preprocessor"
	}, {
		regex : new RegExp("[a-z0-9_]+:[a-z0-9_]+", "g"),
		css : "functions"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : new RegExp(this.getKeywords(a), "gm"),
		css : "keyword"
	} ]
};
SyntaxHighlighter.brushes.Erlang.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Erlang.aliases = [ "erl", "erlang" ];
SyntaxHighlighter.brushes.Groovy = function() {
	var d = "as assert break case catch class continue def default do else extends finally "
			+ "if in implements import instanceof interface new package property return switch "
			+ "throw throws try while public protected private static";
	var c = "void boolean byte char short int long float double";
	var b = "null";
	var a = "allProperties count get size "
			+ "collect each eachProperty eachPropertyName eachWithIndex find findAll "
			+ "findIndexOf grep inject max min reverseEach sort "
			+ "asImmutable asSynchronized flatten intersect join pop reverse subMap toList "
			+ "padRight padLeft contains eachMatch toCharacter toLong toUrl tokenize "
			+ "eachFile eachFileRecurse eachB yte eachLine readBytes readLine getText "
			+ "splitEachLine withReader append encodeBase64 decodeBase64 filterLine "
			+ "transformChar transformLine withOutputStream withPrintWriter withStream "
			+ "withStreams withWriter withWriterAppend write writeLine "
			+ "dump inspect invokeMethod print println step times upto use waitForOrKill "
			+ "getText";
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /""".*"""/g,
		css : "string"
	}, {
		regex : new RegExp("\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b", "gi"),
		css : "value"
	}, {
		regex : new RegExp(this.getKeywords(d), "gm"),
		css : "keyword"
	}, {
		regex : new RegExp(this.getKeywords(c), "gm"),
		css : "color1"
	}, {
		regex : new RegExp(this.getKeywords(b), "gm"),
		css : "constants"
	}, {
		regex : new RegExp(this.getKeywords(a), "gm"),
		css : "functions"
	} ];
	this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags)
};
SyntaxHighlighter.brushes.Groovy.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Groovy.aliases = [ "groovy" ];
SyntaxHighlighter.brushes.Java = function() {
	var a = "abstract assert boolean break byte case catch char class const "
			+ "continue default do double else enum extends "
			+ "false final finally float for goto if implements import "
			+ "instanceof int interface long native new null "
			+ "package private protected public return "
			+ "short static strictfp super switch synchronized this throw throws true "
			+ "transient try void volatile while";
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLineCComments,
		css : "comments"
	}, {
		regex : /\/\*([^\*][\s\S]*)?\*\//gm,
		css : "comments"
	}, {
		regex : /\/\*(?!\*\/)\*[\s\S]*?\*\//gm,
		css : "preprocessor"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi,
		css : "value"
	}, {
		regex : /(?!\@interface\b)\@[\$\w]+\b/g,
		css : "color1"
	}, {
		regex : /\@interface\b/g,
		css : "color2"
	}, {
		regex : new RegExp(this.getKeywords(a), "gm"),
		css : "keyword"
	} ];
	this.forHtmlScript({
		left : /(&lt;|<)%[@!=]?/g,
		right : /%(&gt;|>)/g
	})
};
SyntaxHighlighter.brushes.Java.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Java.aliases = [ "java" ];
SyntaxHighlighter.brushes.JavaFX = function() {
	var b = "Boolean Byte Character Double Duration "
			+ "Float Integer Long Number Short String Void";
	var a = "abstract after and as assert at before bind bound break catch class "
			+ "continue def delete else exclusive extends false finally first for from "
			+ "function if import in indexof init insert instanceof into inverse last "
			+ "lazy mixin mod nativearray new not null on or override package postinit "
			+ "protected public public-init public-read replace return reverse sizeof "
			+ "step super then this throw true try tween typeof var where while with "
			+ "attribute let private readonly static trigger";
	this.regexList = [
			{
				regex : SyntaxHighlighter.regexLib.singleLineCComments,
				css : "comments"
			},
			{
				regex : SyntaxHighlighter.regexLib.multiLineCComments,
				css : "comments"
			},
			{
				regex : SyntaxHighlighter.regexLib.singleQuotedString,
				css : "string"
			},
			{
				regex : SyntaxHighlighter.regexLib.doubleQuotedString,
				css : "string"
			},
			{
				regex : /(-?\.?)(\b(\d*\.?\d+|\d+\.?\d*)(e[+-]?\d+)?|0x[a-f\d]+)\b\.?/gi,
				css : "color2"
			}, {
				regex : new RegExp(this.getKeywords(b), "gm"),
				css : "variable"
			}, {
				regex : new RegExp(this.getKeywords(a), "gm"),
				css : "keyword"
			} ];
	this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags)
};
SyntaxHighlighter.brushes.JavaFX.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.JavaFX.aliases = [ "jfx", "javafx" ];
SyntaxHighlighter.brushes.JScript = function() {
	var a = "break case catch continue " + "default delete do else false  "
			+ "for function if in instanceof "
			+ "new null return super switch "
			+ "this throw true try typeof var while with";
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /\s*#.*/gm,
		css : "preprocessor"
	}, {
		regex : new RegExp(this.getKeywords(a), "gm"),
		css : "keyword"
	} ];
	this.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags)
};
SyntaxHighlighter.brushes.JScript.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.JScript.aliases = [ "js", "jscript", "javascript" ];
SyntaxHighlighter.brushes.Perl = function() {
	var a = "abs accept alarm atan2 bind binmode chdir chmod chomp chop chown chr "
			+ "chroot close closedir connect cos crypt defined delete each endgrent "
			+ "endhostent endnetent endprotoent endpwent endservent eof exec exists "
			+ "exp fcntl fileno flock fork format formline getc getgrent getgrgid "
			+ "getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr "
			+ "getnetbyname getnetent getpeername getpgrp getppid getpriority "
			+ "getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid "
			+ "getservbyname getservbyport getservent getsockname getsockopt glob "
			+ "gmtime grep hex index int ioctl join keys kill lc lcfirst length link "
			+ "listen localtime lock log lstat map mkdir msgctl msgget msgrcv msgsnd "
			+ "oct open opendir ord pack pipe pop pos print printf prototype push "
			+ "quotemeta rand read readdir readline readlink readpipe recv rename "
			+ "reset reverse rewinddir rindex rmdir scalar seek seekdir select semctl "
			+ "semget semop send setgrent sethostent setnetent setpgrp setpriority "
			+ "setprotoent setpwent setservent setsockopt shift shmctl shmget shmread "
			+ "shmwrite shutdown sin sleep socket socketpair sort splice split sprintf "
			+ "sqrt srand stat study substr symlink syscall sysopen sysread sysseek "
			+ "system syswrite tell telldir time times tr truncate uc ucfirst umask "
			+ "undef unlink unpack unshift utime values vec wait waitpid warn write";
	var b = "bless caller continue dbmclose dbmopen die do dump else elsif eval exit "
			+ "for foreach goto if import last local my next no our package redo ref "
			+ "require return sub tie tied unless untie until use wantarray while";
	this.regexList = [ {
		regex : new RegExp("#[^!].*$", "gm"),
		css : "comments"
	}, {
		regex : new RegExp("^\\s*#!.*$", "gm"),
		css : "preprocessor"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : new RegExp("(\\$|@|%)\\w+", "g"),
		css : "variable"
	}, {
		regex : new RegExp(this.getKeywords(a), "gmi"),
		css : "functions"
	}, {
		regex : new RegExp(this.getKeywords(b), "gm"),
		css : "keyword"
	} ];
	this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags)
};
SyntaxHighlighter.brushes.Perl.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Perl.aliases = [ "perl", "Perl", "pl" ];
SyntaxHighlighter.brushes.Php = function() {
	var a = "abs acos acosh addcslashes addslashes "
			+ "array_change_key_case array_chunk array_combine array_count_values array_diff "
			+ "array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill "
			+ "array_filter array_flip array_intersect array_intersect_assoc array_intersect_key "
			+ "array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map "
			+ "array_merge array_merge_recursive array_multisort array_pad array_pop array_product "
			+ "array_push array_rand array_reduce array_reverse array_search array_shift "
			+ "array_slice array_splice array_sum array_udiff array_udiff_assoc "
			+ "array_udiff_uassoc array_uintersect array_uintersect_assoc "
			+ "array_uintersect_uassoc array_unique array_unshift array_values array_walk "
			+ "array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert "
			+ "basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress "
			+ "bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir "
			+ "checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists "
			+ "closedir closelog copy cos cosh count count_chars date decbin dechex decoct "
			+ "deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log "
			+ "error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded "
			+ "feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents "
			+ "fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype "
			+ "floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf "
			+ "fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname "
			+ "gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt "
			+ "getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext "
			+ "gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set "
			+ "interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double "
			+ "is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long "
			+ "is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault "
			+ "is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br "
			+ "parse_ini_file parse_str parse_url passthru pathinfo readlink realpath rewind rewinddir rmdir "
			+ "round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split "
			+ "str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes "
			+ "stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk "
			+ "strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime "
			+ "strtoupper strtr strval substr substr_compare";
	var c = "and or xor array as break case "
			+ "cfunction class const continue declare default die do else "
			+ "elseif enddeclare endfor endforeach endif endswitch endwhile "
			+ "extends for foreach function include include_once global if "
			+ "new old_function return static switch use require require_once "
			+ "var while abstract interface public implements extends private protected throw";
	var b = "__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__";
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /\$\w+/g,
		css : "variable"
	}, {
		regex : new RegExp(this.getKeywords(a), "gmi"),
		css : "functions"
	}, {
		regex : new RegExp(this.getKeywords(b), "gmi"),
		css : "constants"
	}, {
		regex : new RegExp(this.getKeywords(c), "gm"),
		css : "keyword"
	} ];
	this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags)
};
SyntaxHighlighter.brushes.Php.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Php.aliases = [ "php" ];
SyntaxHighlighter.brushes.Plain = function() {
};
SyntaxHighlighter.brushes.Plain.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Plain.aliases = [ "text", "plain" ];
SyntaxHighlighter.brushes.Python = function() {
	var c = "and assert break class continue def del elif else "
			+ "except exec finally for from global if import in is "
			+ "lambda not or pass print raise return try yield while";
	var a = "__import__ abs all any apply basestring bin bool buffer callable "
			+ "chr classmethod cmp coerce compile complex delattr dict dir "
			+ "divmod enumerate eval execfile file filter float format frozenset "
			+ "getattr globals hasattr hash help hex id input int intern "
			+ "isinstance issubclass iter len list locals long map max min next "
			+ "object oct open ord pow print property range raw_input reduce "
			+ "reload repr reversed round set setattr slice sorted staticmethod "
			+ "str sum super tuple type type unichr unicode vars xrange zip";
	var b = "None True False self cls class_";
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLinePerlComments,
		css : "comments"
	}, {
		regex : /^\s*@\w+/gm,
		css : "decorator"
	}, {
		regex : /(['\"]{3})([^\1])*?\1/gm,
		css : "comments"
	}, {
		regex : /"(?!")(?:\.|\\\"|[^\""\n])*"/gm,
		css : "string"
	}, {
		regex : /'(?!')(?:\.|(\\\')|[^\''\n])*'/gm,
		css : "string"
	}, {
		regex : /\+|\-|\*|\/|\%|=|==/gm,
		css : "keyword"
	}, {
		regex : /\b\d+\.?\w*/g,
		css : "value"
	}, {
		regex : new RegExp(this.getKeywords(a), "gmi"),
		css : "functions"
	}, {
		regex : new RegExp(this.getKeywords(c), "gm"),
		css : "keyword"
	}, {
		regex : new RegExp(this.getKeywords(b), "gm"),
		css : "color1"
	} ];
	this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags)
};
SyntaxHighlighter.brushes.Python.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Python.aliases = [ "py", "python" ];
SyntaxHighlighter.brushes.Ruby = function() {
	var a = "alias and BEGIN begin break case class def define_method defined do each else elsif "
			+ "END end ensure false for if in module new next nil not or raise redo rescue retry return "
			+ "self super then throw true undef unless until when while yield";
	var b = "Array Bignum Binding Class Continuation Dir Exception FalseClass File::Stat File Fixnum Fload "
			+ "Hash Integer IO MatchData Method Module NilClass Numeric Object Proc Range Regexp String Struct::TMS Symbol "
			+ "ThreadGroup Thread Time TrueClass";
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLinePerlComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /\b[A-Z0-9_]+\b/g,
		css : "constants"
	}, {
		regex : /:[a-z][A-Za-z0-9_]*/g,
		css : "color2"
	}, {
		regex : /(\$|@@|@)\w+/g,
		css : "variable bold"
	}, {
		regex : new RegExp(this.getKeywords(a), "gm"),
		css : "keyword"
	}, {
		regex : new RegExp(this.getKeywords(b), "gm"),
		css : "color1"
	} ];
	this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags)
};
SyntaxHighlighter.brushes.Ruby.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Ruby.aliases = [ "ruby", "rails", "ror", "rb" ];
SyntaxHighlighter.brushes.Scala = function() {
	var b = "val sealed case def true trait implicit forSome import match object null finally super "
			+ "override try lazy for var catch throw type extends class while with new final yield abstract "
			+ "else do if return protected private this package false";
	var a = "[_:=><%#@]+";
	this.regexList = [ {
		regex : SyntaxHighlighter.regexLib.singleLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineCComments,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineSingleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineDoubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : /0x[a-f0-9]+|\d+(\.\d+)?/gi,
		css : "value"
	}, {
		regex : new RegExp(this.getKeywords(b), "gm"),
		css : "keyword"
	}, {
		regex : new RegExp(a, "gm"),
		css : "keyword"
	} ]
};
SyntaxHighlighter.brushes.Scala.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Scala.aliases = [ "scala" ];
SyntaxHighlighter.brushes.Sql = function() {
	var b = "abs avg case cast coalesce convert count current_timestamp "
			+ "current_user day isnull left lower month nullif replace right "
			+ "session_user space substring sum system_user upper user year";
	var c = "absolute action add after alter as asc at authorization begin bigint "
			+ "binary bit by cascade char character check checkpoint close collate "
			+ "column commit committed connect connection constraint contains continue "
			+ "create cube current current_date current_time cursor database date "
			+ "deallocate dec decimal declare default delete desc distinct double drop "
			+ "dynamic else end end-exec escape except exec execute false fetch first "
			+ "float for force foreign forward free from full function global goto grant "
			+ "group grouping having hour ignore index inner insensitive insert instead "
			+ "int integer intersect into is isolation key last level load local max min "
			+ "minute modify move name national nchar next no numeric of off on only "
			+ "open option order out output partial password precision prepare primary "
			+ "prior privileges procedure public read real references relative repeatable "
			+ "restrict return returns revoke rollback rollup rows rule schema scroll "
			+ "second section select sequence serializable set size smallint static "
			+ "statistics table temp temporary then time timestamp to top transaction "
			+ "translation trigger true truncate uncommitted union unique update values "
			+ "varchar varying view when where with work";
	var a = "all and any between cross in join like not null or outer some";
	this.regexList = [ {
		regex : /--(.*)$/gm,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineDoubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineSingleQuotedString,
		css : "string"
	}, {
		regex : new RegExp(this.getKeywords(b), "gmi"),
		css : "color2"
	}, {
		regex : new RegExp(this.getKeywords(a), "gmi"),
		css : "color1"
	}, {
		regex : new RegExp(this.getKeywords(c), "gmi"),
		css : "keyword"
	} ]
};
SyntaxHighlighter.brushes.Sql.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Sql.aliases = [ "sql" ];
SyntaxHighlighter.brushes.Vb = function() {
	var a = "AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto "
			+ "Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate "
			+ "CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType "
			+ "Date Decimal Declare Default Delegate Dim DirectCast Do Double Each "
			+ "Else ElseIf End Enum Erase Error Event Exit False Finally For Friend "
			+ "Function Get GetType GoSub GoTo Handles If Implements Imports In "
			+ "Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module "
			+ "MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing "
			+ "NotInheritable NotOverridable Object On Option Optional Or OrElse "
			+ "Overloads Overridable Overrides ParamArray Preserve Private Property "
			+ "Protected Public RaiseEvent ReadOnly ReDim REM RemoveHandler Resume "
			+ "Return Select Set Shadows Shared Short Single Static Step Stop String "
			+ "Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until "
			+ "Variant When While With WithEvents WriteOnly Xor";
	this.regexList = [ {
		regex : /'.*$/gm,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : /^\s*#.*$/gm,
		css : "preprocessor"
	}, {
		regex : new RegExp(this.getKeywords(a), "gm"),
		css : "keyword"
	} ];
	this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags)
};
SyntaxHighlighter.brushes.Vb.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Vb.aliases = [ "vb", "vbnet" ];
SyntaxHighlighter.brushes.Lua = function() {
	var a = "and break do else elseif end false for function if in "
			+ "local nil not or repeat return then true until while";
	var b = "_G _VERSION assert collectgarbage dofile error getfenv "
			+ "getmetatable ipairs load module next pairs pcall print "
			+ " rawequal rawget rawset require select setfenv setmetatable "
			+ "tonumber tostring type unpack xpcall "
			+ "coroutine.create coroutine.resume coroutine.running "
			+ "coroutine.status coroutine.wrap coroutine.yield "
			+ "debug.debug debug.getfenv debug.gethook debug.getinfo "
			+ "debug.getlocal debug.getmetatable debug.getregistry "
			+ "debug.getupvalue debug.setfenv debug.sethook debug.setlocal "
			+ "debug.setmetatable debug.setupvalue debug.traceback "
			+ "file:close file:flush file:lines file:read file:seek "
			+ "file:setvbuf file:write"
			+ "io.close io.flush io.input io.lines io.open io.output "
			+ "io.popen io.read io.stderr io.stdin io.stdout io.tmpfile "
			+ "io.type io.write "
			+ "math.abs math.acos math.asin math.atan math.atan2 math.ceil "
			+ "math.cos math.cosh math.deg math.exp math.floor math.fmod "
			+ "math.frexp math.huge math.ldexp math.log math.log10 math.max "
			+ "math.min math.modf math.pi math.pow math.rad math.random "
			+ "math.randomseed math.sin math.sinh math.sqrt math.tan math.tanh "
			+ "os.clock os.date os.difftime os.execute os.exit os.getenv os.remove "
			+ "os.rename os.setlocale os.time os.tmpname "
			+ "package.cpath package.loaded package.loaders package.loadlib "
			+ "package.path package.preload package.seeall "
			+ "string.byte string.char string.dump string.find string.format "
			+ "string.gmatch string.gsub string.len string.lower string.match "
			+ "string.rep string.reverse string.sub string.upper table.concat "
			+ "table.insert table.maxn table.remove table.sort";
	this.regexList = [ {
		regex : /--.*/gm,
		css : "comments"
	}, {
		regex : /--\[\[[\S\s]*\]\]/gm,
		css : "comments"
	}, {
		regex : SyntaxHighlighter.regexLib.doubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.singleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineDoubleQuotedString,
		css : "string"
	}, {
		regex : SyntaxHighlighter.regexLib.multiLineSingleQuotedString,
		css : "string"
	}, {
		regex : new RegExp(this.getKeywords(a), "gm"),
		css : "keyword"
	}, {
		regex : new RegExp(this.getKeywords(b), "gm"),
		css : "functions"
	} ]
};
SyntaxHighlighter.brushes.Lua.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Lua.aliases = [ "lua" ];
SyntaxHighlighter.brushes.Xml = function() {
	function a(e, i) {
		var f = SyntaxHighlighter.Match, h = e[0], c = new XRegExp(
				"(&lt;|<)[\\s\\/\\?]*(?<name>[:\\w-\\.]+)", "xg").exec(h), b = [];
		if (e.attributes != null) {
			var d, g = new XRegExp("(?<name> [\\w:\\-\\.]+)" + "\\s*=\\s*"
					+ "(?<value> \".*?\"|'.*?'|\\w+)", "xg");
			while ((d = g.exec(h)) != null) {
				b.push(new f(d.name, e.index + d.index, "color1"));
				b.push(new f(d.value,
						e.index + d.index + d[0].indexOf(d.value), "string"))
			}
		}
		if (c != null) {
			b.push(new f(c.name, e.index + c[0].indexOf(c.name), "keyword"))
		}
		return b
	}
	this.regexList = [
			{
				regex : new XRegExp(
						"(\\&lt;|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\&gt;|>)",
						"gm"),
				css : "color2"
			},
			{
				regex : SyntaxHighlighter.regexLib.xmlComments,
				css : "comments"
			},
			{
				regex : new XRegExp(
						"(&lt;|<)[\\s\\/\\?]*(\\w+)(?<attributes>.*?)[\\s\\/\\?]*(&gt;|>)",
						"sg"),
				func : a
			} ]
};
SyntaxHighlighter.brushes.Xml.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Xml.aliases = [ "xml", "xhtml", "xslt", "html" ];
